﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using FrbaCommerce.Clases;

namespace FrbaCommerce.Abm_Empresa
{
    public partial class ListadoEmpresa : Form
    {
        bool modo;
        public ListadoEmpresa(bool modo)
        {
            InitializeComponent();
            this.modo = modo;
        }

        private void ListadoEmpresa_Load(object sender, EventArgs e)
        {
            this.dgvEmpresa.SelectionChanged += new EventHandler(dgvEmpresa_SelectionChanged);
            if (modo)
            {
                btnBaja.Enabled = false;
                btnModificar.Enabled = true;
            }
            else
            {
                btnModificar.Enabled = false;
                btnBaja.Enabled = true;
            }
        }

        void dgvEmpresa_SelectionChanged(object sender, EventArgs e)
        {
            if (this.dgvEmpresa.SelectedCells.Count > 0)
            {
                Empresa_Dir emp = (Empresa_Dir)this.dgvEmpresa.SelectedCells[0].OwningRow.DataBoundItem;
                if (emp.Habilitado)
                {
                    this.btnBaja.Text = "Eliminar";
                }
                else
                {
                    this.btnBaja.Text = "Activar";
                }
            }
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            Empresa_Dir emp = new Empresa_Dir();
            this.dgvEmpresa.DataSource = emp.GetEmpresas(txtRazonSocial.Text, txtCUIT.Text, txtEmail.Text);
            this.dgvEmpresa.Columns[0].Visible = false;
            this.dgvEmpresa.Columns[1].Visible = false;

        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            if (this.dgvEmpresa.SelectedCells.Count > 0)
            {
                Empresa_Dir empresa = (Empresa_Dir)this.dgvEmpresa.SelectedCells[0].OwningRow.DataBoundItem;
                Empresa empresa_modif = new Empresa();
                empresa_modif = empresa_modif.BuscarEmpresa(empresa.id);
                AbmEmpresa abmEmpresa = new AbmEmpresa(empresa_modif);
                abmEmpresa.FormClosed += new FormClosedEventHandler(abmEmpresa_FormClosed);
                abmEmpresa.ShowDialog();
            }
            else
            {
                MessageBox.Show("Seleccione una Empresa para modificar.\n", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        void abmEmpresa_FormClosed(object sender, FormClosedEventArgs e)
        {
            CargarEmpresas();
        }

        private void btnBaja_Click(object sender, EventArgs e)
        {
            if (this.dgvEmpresa.SelectedCells.Count > 0)
            {
                Empresa_Dir empresa = (Empresa_Dir)this.dgvEmpresa.SelectedCells[0].OwningRow.DataBoundItem;
                Empresa empresa_baja = new Empresa();
                empresa_baja = empresa_baja.BuscarEmpresa(empresa.id);
                if (empresa_baja.habilitado && MessageBox.Show("¿Está seguro de que desea dar de baja a la Empresa?\n", "Advertencia", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)
                {
                    return;
                }
                empresa_baja.habilitado = !empresa_baja.habilitado;
                empresa_baja.Baja(empresa_baja);
                this.CargarEmpresas();
            }
            else
            {
                MessageBox.Show("Seleccione una Empresa para modificar.\n", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        private void lblLimpiarCampos_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            LimpiarCampos();
        }

        private void LimpiarCampos()
        {
            txtEmail.Text = String.Empty;
            txtCUIT.Text = String.Empty;
            txtRazonSocial.Text = String.Empty;
        }

        private void CargarEmpresas()
        {
            LimpiarCampos();
            Empresa_Dir emp = new Empresa_Dir();
            this.dgvEmpresa.DataSource = emp.GetEmpresas(txtRazonSocial.Text, txtCUIT.Text, txtEmail.Text);
            this.dgvEmpresa.Columns[0].Visible = false;
            this.dgvEmpresa.Columns[1].Visible = false;  
        }
        
    }
}
